package com.zhaosc.spark.core

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

/**
 * Distinct这个算子可以讲RDD中的数据进行去重
 */
object DistinctOperator {
  def main(args: Array[String]): Unit = {
     val conf = new SparkConf().setAppName("DistinctOperator").setMaster("local")
    val sc = new SparkContext(conf)
     
     
     val list = List(
       ("bjsxt",1),
       ("bjsxt",1),
       ("bjsxt",2),
       ("shsxt",1)
     )
     val rdd = sc.parallelize(list)
     
//     rdd.distinct().foreach { println }
     /**
      * 如果现在不准使用distinct算子，使用你们已经掌握的算子来对RDD中的数据进行去重，如何做？
      * distinct = map + reduceByKey + map
      */
     val qcRDD = rdd.map(x=>{
        (x,0)        
     }).reduceByKey(_+_).map(x=>{
       x._1
     })
     qcRDD.foreach(println)
      sc.stop()
  }
}